﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace NetFrameworkExtensions.BusinessLayer
{
  public interface IBusinessObject :
    IBusinessBase,
    IIdentified,
    IConcurrent
  {
    DateTime? DeletionDate { get; }
  }

  public interface IBusinessObject<TEntity, TIdentifier> :
    IBusinessObject,
    IIdentified<TIdentifier>
    where TIdentifier : IEquatable<TIdentifier>
  {
  }

  public interface IBusinessObject<TEntity, TIdentified, TIdentifier> :
    IBusinessObject<TEntity, TIdentifier>,
    IIdentified<TIdentified, TIdentifier>
    where TIdentified : class, IBusinessObject<TEntity, TIdentified, TIdentifier>
    where TIdentifier : IEquatable<TIdentifier>
  {
  }
}
